package com.tedu.API.thread;

/**
 * 线程：单线程、多线程
 * 单线程：按照顺序执行线程、主方法就是主线程 main
 * 多线程：创建多条线程，做不同的事情
 * 多线程并发：创建多条线程，”同时“做相同的事情
 *
 * 案例：创建 Chef 类  实现Runnable
 *                     私有属性     disName
 *                     run()功能：{提示语句：开始准备+disName
 *                                模拟准备时间：阻塞 1~3
 *                     Math.random() 随机生成0.0到1.0浮点数值 (不包含1.0)
 *                              提示语句：disName+准备完成
 *                     }
 *
 *           主方法 实现  创建两个线程  两个       Chef1   【不需要lambda】
 *                                             Chef2
 */
public class Kitchen {
    public static void main(String[] args) {
        //第一位厨师----西红柿炒鸡蛋
        Thread chef1=new Thread(new Chef("西红柿炒鸡蛋"));
        //第二位厨师----红烧肉
        Thread chef2=new Thread(new Chef("红烧肉"));

        chef1.start();
        chef2.start();
    }
}
//创建厨子类
class Chef implements  Runnable{
    private String disName;   //私有属性：菜肴名
      //俩厨子“同时”完成菜肴制作---构造器:区分厨师制作菜肴
       public Chef(String dn){
           this.disName=dn;   //来厨师   this.disName="红烧肉"
                              //this当前对象--Chef
       }

    public void run() {
        System.out.println("开始准备"+disName);
        //模拟厨师准备时间：  1~3秒
        //1.Math.random()  获取0.0~1范围值【不包括1.0     范围”00~0.9】
        //   范围值：0.0~0.9
        //2.Math.random()*3000,得到范围值：0.0~3000.0【不包括3000.0】
        //  范围值： 0.0~2999.0
        //3.成3000范围:0.0~2999.0 强转long类型   (long)(Math.random()*3000)
        // 范围值：0~2999     秒数：0~2
        //4.加1000  (long)(Math.random()*3000)+1000
        //  范围值：1~3秒
        try {
            Thread.sleep((long)(Math.random()*3000)+1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(disName+"准备完成~请享用~");
    }
}